/*
 * UVa 340
 * 猜数字游戏的提示
 *
 * 实现一个经典"猜数字"游戏。
 * 给定答案序列和用户猜的序列，
 * 统计有多少数字位置正确 A，
 * 有多少数字在两个序列都出现过但位置不对 B。
 * 输出 (A,B)
 *
 * 输入包含多组数据。
 * 每组输入第一行为序列长度 n，第二行是答案序列，
 * 接下来是若干猜测序列。
 * 猜测序列全 0 时该组数据结束。
 * n=0 时输入结束。
 * 注意在 (A,B) 之前要输出四个空格符。
 */
/*
  样例输入：
  4
  1 3 5 5
  1 1 2 3
  4 3 3 5
  6 5 5 1
  6 1 3 5
  1 3 5 5
  0 0 0 0
  10
  1 2 2 2 4 5 6 6 6 9
  1 2 3 4 5 6 7 8 9 1
  1 1 2 2 3 3 4 4 5 5
  1 2 1 3 1 5 1 6 1 9
  1 2 2 5 5 5 6 6 6 7
  0 0 0 0 0 0 0 0 0 0
  0
  样例输出：
  Game 1:
      (1,1)
      (2,0)
      (1,2)
      (1,2)
      (4,0)
  Game 2:
      (2,4)
      (3,2)
      (5,0)
      (7,0)
*/

#include <iostream>
#include <fstream>
#define LOCAL
using namespace std;
const int N = 1e5;
int ans[N];       // 存答案
int guess[N];     // 存序列
int t1[N], t2[N]; // 桶标记
int main()
{
#ifdef LOCAL
    ifstream cin("in.txt");
    ofstream cout("out.txt");
#endif
    int n, count = 0;
    while (cin >> n && n != 0)
    {
        // 输入答案
        for (int i = 0; i < n; i++)
            cin >> ans[i];
        cout << "Game " << ++count << ':' << endl;
        // 猜数
        while (true)
        {
            int A, B;
            A = B = 0;
            int flag = 0; // 标记是否为结束序列
            for (int i = 0; i < n; i++)
            {
                // 输入猜数序列并计算 A
                cin >> guess[i];
                if (guess[i] == 0)
                    ++flag; // flag 增至 n 时为结束序列
                if (guess[i] == ans[i])
                    ++A;
            }
            if (flag == n)
                break;
            // 计算 B
            // 用 min(数字在 ans 中出现的次数，在 guess 中出现的次数)
            // 减去 A 即可。
            for (int i = 0; i < N; ++i)
                t1[i] = t2[i] = 0;
            for (int i = 0; i < n; ++i)
            {
                // 用桶标记数字在 ans 和 guess 中的出现次数
                ++t1[ans[i]];
                ++t2[guess[i]];
            }
            for (int i = 0; i < N; ++i)
                B += min(t1[i], t2[i]);
            cout << "    (" << A << ',' << B - A << ')' << endl;
        }
    }
    return 0;
}
// 计算 B 是关键

// 课本答案
// #include <stdio.h>
// #define LOCAL
// #define maxn 1010
// int main()
// {
// #ifdef LOCAL
//     freopen("in.txt", "r", stdin);
//     freopen("out.txt", "w", stdout);
// #endif
//     int n, a[maxn], b[maxn];
//     int kase = 0;
//     while (scanf("%d", &n) == 1 && n)
//     { // n=0时输入结束
//         printf("Game %d:\n", ++kase);
//         for (int i = 0; i < n; i++)
//             scanf("%d", &a[i]);
//         for (;;)
//         {
//             int A = 0, B = 0;
//             for (int i = 0; i < n; i++)
//             {
//                 scanf("%d", &b[i]);
//                 if (a[i] == b[i])
//                     A++;
//             }
//             if (b[0] == 0)
//                 break; // 正常的猜测序列不会有0，所以只判断第一个数是否为0即可
//             for (int d = 1; d <= 9; d++)
//             {
//                 int c1 = 0, c2 = 0; // 统计数字d在答案序列和猜测序列中各出现多少次
//                 for (int i = 0; i < n; i++)
//                 {
//                     if (a[i] == d)
//                         c1++;
//                     if (b[i] == d)
//                         c2++;
//                 }
//                 if (c1 < c2)
//                     B += c1;
//                 else
//                     B += c2;
//             }
//             printf("    (%d,%d)\n", A, B - A);
//         }
//     }
//     return 0;
// }